#ifndef __PROPERTY_H__
#define __PROPERTY_H__

#define RX_PROPERTY_KEY_MAX_LENGTH 32      //属性值名字最大长度，不包括最后的结束符
#define RX_PROPERTY_VALUE_MAX_LENGTH 92     //属性值数据最大长度，可以不为字符串数据
#define RX_PROPERTY_MAX_COUNT 64            //共支持最多64个property

#define RX_PROPERTY_DEFAULT_VALUE_PATH "/etc/cvte/system.prop"
#define RX_PROPERTY_PERSIST_VALUE_PATH "/mnt/UDISK/persist.prop"

typedef struct {
    char key[RX_PROPERTY_KEY_MAX_LENGTH];
    char value[RX_PROPERTY_VALUE_MAX_LENGTH];
    long long notify_app_id;  //属性值改变时会通知的APP的ID，共64位，8个字节，每个字节代表一个APP id，同时最大支持16个app
} RxProperty;

//@method 初始化Property子系统，目前在SystemGuard服务中调用，成功返回1
int property_init(void);

//@method property获取，成功返回字符串长度
int property_get(const char *key, char value[RX_PROPERTY_VALUE_MAX_LENGTH], const char *default_value);

//@method property设置，这里的属性允许设置非字符串数据，所以需要传入size以指示数据的长度，成功返回size
int property_set(const char *key, const char *value, const int size);

//@method property通知设置，设置后该属性值变化会通过消息队列通知对应app，成功返回1
int property_notify_set(int app_id, const char *key, int enable);

//@method 打印所有property
void property_print(void);

#endif